import { login, getUserProfile, getUserDetailById } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
// import { resetRouter } from '@/router'

// import { removeToken } from '@/utils/auth'

// const getDefaultState = () => {
//   return {
//     token: getToken(),
//     name: '',
//     avatar: ''
//   }
// }

// token处理(整体分析)
const state = {
  token: getToken() || '', // 用户token
  userInfo: {}// 用户信息
}

const mutations = {
// 1.token部分
  setToken(state, newToken) {
    state.token = newToken// 设置token
    setToken(newToken)// 本地存储token
  },
  // // 移除token
  removeToken(state) {
    state.token = ''
    removeToken()// 本地删除token
  },

  // 2.用户信息
  setuserInfo(state, getuserInfo) { // 设置用户信息
    state.userInfo = getuserInfo
  },
  removeuserInfo(state) { // 清除
    state.userInfo = {}
  }

}

const actions = {
  // 登录模块
  async userLogin(context, data) {
    console.log(context)
    const res = await login(data)
    console.log(res)
    context.commit('setToken', res.data)
  },

  // 放置用户信息
  async getuserInfo(context) {
    const res = await getUserProfile()
    console.log('用户名', res)
    context.commit('setuserInfo', res.data)

    const res1 = await getUserDetailById(res.data.userId)
    console.log('用户头像', res1)
    // 合并用户头像和用户名在一个方法中
    context.commit('setuserInfo', { ...state.userInfo, ...res1.data })
  },

  // 退出模块
  logout(context) {
    context.commit('removeToken')// 清空token
    context.commit('removeuserInfo')// 清空用户信息
  }

}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

